#pragma once

#include"io_buf.h"
#include"buf_pool.h"
#include<assert.h>
#include<unistd.h>

class reactor_buf{
public:
    reactor_buf();
    ~reactor_buf();

    //得到当前的buf还有多少有效数据
    const int length();
    // 已经处理了多少数据
    void pop(int len);
    // 将当前的buf清空
    void clear();

protected:
    io_buf* _buf;
};


//读(输入) 缓存buffer
class input_buf : public reactor_buf {
public:
    //从一个fd中读取数据到reactor_buf中
    int read_data(int fd);

    //取出读到的数据
    const char *data();

    //重置缓冲区
    void adjust();
};


//写(输出)  缓存buffer
class output_buf : public reactor_buf {
public:
    //将一段数据 写到自身reactor_buf中
    int send_data(const char *data, int datalen);

    //将reactor_buf中的数据写到一个fd中
    int write2fd(int fd);
};
